﻿//实现一个算法，确定一个字符串 s 的所有字符是否全都不同。
//
//输入 : s = "leetcode"
//输出 : false
//
//输入 : s = "abc"
//输出 : true
//
//限制：
//	0 <= len(s) <= 100
//	s[i]仅包含小写字母
//	如果你不使用额外的数据结构，会很加分。

class Solution {
public:
    bool isUnique(string astr) {
        // 利⽤鸽巢原理来做的优化

        if (astr.size() > 26)
            return false;
        int bitMap = 0;
        for (auto ch : astr) {
            int i = ch - 'a';
            // 先判断字符是否已经出现过

            if (((bitMap >> i) & 1) == 1)
                return false;
            // 把当前字符加⼊到位图中

            bitMap |= 1 << i;
        }
        return true;
    }
};